/**

 @Name：layuiAdmin iframe版核心模块
 @Author：贤心
 @Site：http://www.layui.com/admin/
 @License：LPPL
    
 */
 
layui.define('view', function(exports){
    var $ = layui.jquery
    ,laytpl = layui.laytpl
    ,element = layui.element
    ,setter = layui.setter
    ,view = layui.view
    ,device = layui.device()
    
    ,$win = $(window), $body = $('body')
    ,container = $('#'+ setter.container)
    
    ,SHOW = 'layui-show', HIDE = 'layui-hide', THIS = 'layui-this', DISABLED = 'layui-disabled', TEMP = 'template'
    ,APP_BODY = '#LAY_app_body', APP_FLEXIBLE = 'LAY_app_flexible'
    ,FILTER_TAB_TBAS = 'layadmin-layout-tabs'
    ,APP_SPREAD_SM = 'layadmin-side-spread-sm', TABS_BODY = 'layadmin-tabsbody-item'
    ,ICON_SHRINK = 'layui-icon-shrink-right', ICON_SPREAD = 'layui-icon-spread-left'
    ,SIDE_SHRINK = 'layadmin-side-shrink', SIDE_MENU = 'LAY-system-side-menu'
  
    //通用方法
    ,admin = {
      v: '1.2.1 std'
      
      //数据的异步请求
      ,req: view.req
      
      //清除本地 token，并跳转到登入页
      ,exit: view.exit
      
      //xss 转义
      ,escape: function(html){
        return String(html || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&amp;')
        .replace(/</g, '&lt;').replace(/>/g, '&gt;')
        .replace(/'/g, '&#39;').replace(/"/g, '&quot;');
      }
      
      //事件监听
      ,on: function(events, callback){
        return layui.onevent.call(this, setter.MOD_NAME, events, callback);
      }
      
      //发送验证码
      ,sendAuthCode: function(options){
        options = $.extend({
          seconds: 60
          ,elemPhone: '#LAY_phone'
          ,elemVercode: '#LAY_vercode'
        }, options);
  
        var seconds = options.seconds
        ,btn = $(options.elem)
        ,token = null
        ,timer, countDown = function(loop){
          seconds--;
          if(seconds < 0){
            btn.removeClass(DISABLED).html('获取验证码');
            seconds = options.seconds;
            clearInterval(timer);
          } else {
            btn.addClass(DISABLED).html(seconds + '秒后重获');
          }
  
          if(!loop){
            timer = setInterval(function(){
              countDown(true);
            }, 1000);
          }
        };
        
        options.elemPhone = $(options.elemPhone);
        options.elemVercode = $(options.elemVercode);
  
        btn.on('click', function(){
          var elemPhone = options.elemPhone
          ,value = elemPhone.val();
  
          if(seconds !== options.seconds || $(this).hasClass(DISABLED)) return;
  
          if(!/^1\d{10}$/.test(value)){
            elemPhone.focus();
            return layer.msg('请输入正确的手机号')
          };
          
          if(typeof options.ajax === 'object'){
            var success = options.ajax.success;
            delete options.ajax.success;
          }
          
          admin.req($.extend(true, {
            url: '/auth/code'
            ,type: 'get'
            ,data: {
              phone: value
            }
            ,success: function(res){
              layer.msg('验证码已发送至你的手机，请注意查收', {
                icon: 1
                ,shade: 0
              });
              options.elemVercode.focus();
              countDown();
              success && success(res);
            }
          }, options.ajax));
        });
      }
      
      //屏幕类型
      ,screen: function(){
        var width = $win.width()
        if(width > 1200){
          return 3; //大屏幕
        } else if(width > 992){
          return 2; //中屏幕
        } else if(width > 768){
          return 1; //小屏幕
        } else {
          return 0; //超小屏幕
        }
      }
      
      //侧边伸缩
      ,sideFlexible: function(status){
        var app = container
        ,iconElem =  $('#'+ APP_FLEXIBLE)
        ,screen = admin.screen();
  
        //设置状态，PC：默认展开、移动：默认收缩
        if(status === 'spread'){
          //切换到展开状态的 icon，箭头：←
          iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK);
          
          //移动：从左到右位移；PC：清除多余选择器恢复默认
          if(screen < 2){
            app.addClass(APP_SPREAD_SM);
          } else {
            app.removeClass(APP_SPREAD_SM);
          }
          
          app.removeClass(SIDE_SHRINK)
        } else {
          //切换到搜索状态的 icon，箭头：→
          iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD);
          
          //移动：清除多余选择器恢复默认；PC：从右往左收缩
          if(screen < 2){
            app.removeClass(SIDE_SHRINK);
          } else {
            app.addClass(SIDE_SHRINK);
          }
          
          app.removeClass(APP_SPREAD_SM)
        }
        
        layui.event.call(this, setter.MOD_NAME, 'side({*})', {
          status: status
        });
      }
      
      //弹出面板
      ,popup: view.popup
      
      //右侧面板
      ,popupRight: function(options){
        //layer.close(admin.popup.index);
        return admin.popup.index = layer.open($.extend({
          type: 1
          ,id: 'LAY_adminPopupR'
          ,anim: -1
          ,title: false
          ,closeBtn: false
          ,offset: 'r'
          ,shade: 0.1
          ,shadeClose: true
          ,skin: 'layui-anim layui-anim-rl layui-layer-adminRight'
          ,area: '300px'
        }, options));
      }
      
      //主题设置
      ,theme: function(options){
        var theme = setter.theme
        ,local = layui.data(setter.tableName)
        ,id = 'LAY_layadmin_theme'
        ,style = document.createElement('style')
        ,styleText = laytpl([
          //主题色
          '.layui-side-menu,'
          ,'.layadmin-pagetabs .layui-tab-title li:after,'
          ,'.layadmin-pagetabs .layui-tab-title li.layui-this:after,'
          ,'.layui-layer-admin .layui-layer-title,'
          ,'.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child'
          ,'{background-color:{{d.color.main}} !important;}'
   
          //选中色
          ,'.layui-nav-tree .layui-this,'
          ,'.layui-nav-tree .layui-this>a,'
          ,'.layui-nav-tree .layui-nav-child dd.layui-this,'
          ,'.layui-nav-tree .layui-nav-child dd.layui-this a'
          ,'{background-color:{{d.color.selected}} !important;}'
          
          //logo
          ,'.layui-layout-admin .layui-logo{background-color:{{d.color.logo || d.color.main}} !important;}'
          
          //头部色
          ,'{{# if(d.color.header){ }}'
            ,'.layui-layout-admin .layui-header{background-color:{{ d.color.header }};}'
            ,'.layui-layout-admin .layui-header a,'
            ,'.layui-layout-admin .layui-header a cite{color: #f8f8f8;}'
            ,'.layui-layout-admin .layui-header a:hover{color: #fff;}'
            ,'.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #fbfbfb;}'
            ,'.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #fbfbfb;}'
            ,'.layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar{background-color: #fff; background-color: rgba(255,255,255,.5);}'
            ,'.layadmin-pagetabs .layui-tab-title li:after{display: none;}'
          ,'{{# } }}'
        ].join('')).render(options = $.extend({}, local.theme, options))
        ,styleElem = document.getElementById(id);
        
        //添加主题样式
        if('styleSheet' in style){
          style.setAttribute('type', 'text/css');
          style.styleSheet.cssText = styleText;
        } else {
          style.innerHTML = styleText;
        }
        style.id = id;
        
        styleElem && $body[0].removeChild(styleElem);
        $body[0].appendChild(style);
        $body.attr('layadmin-themealias', options.color.alias);
        
        //本地存储记录
        local.theme = local.theme || {};
        layui.each(options, function(key, value){
          local.theme[key] = value;
        });
        layui.data(setter.tableName, {
          key: 'theme'
          ,value: local.theme
        }); 
      }
      
      //初始化主题
      ,initTheme: function(index){
        var theme = setter.theme;
        index = index || 0;
        if(theme.color[index]){
          theme.color[index].index = index;
          admin.theme({
            color: theme.color[index]
          });
        }
      }
      
      //记录最近一次点击的页面标签数据
      ,tabsPage: {}
      
      //获取页面标签主体元素
      ,tabsBody: function(index){
        return $(APP_BODY).find('.'+ TABS_BODY).eq(index || 0);
      }
      
      //切换页面标签主体
      ,tabsBodyChange: function(index, options){
        options = options || {};
        
        admin.tabsBody(index).addClass(SHOW).siblings().removeClass(SHOW);
        events.rollPage('auto', index);
        
        //执行 {setter.MOD_NAME}.tabsPage 下的事件
        layui.event.call(this, setter.MOD_NAME, 'tabsPage({*})', {
          url: options.url
          ,text: options.text
        });
      }
      
      //resize事件管理
      ,resize: function(fn){
        var router = layui.router()
        ,key = router.path.join('-');
        
        if(admin.resizeFn[key]){
          $win.off('resize', admin.resizeFn[key]);
          delete admin.resizeFn[key];
        }
        
        if(fn === 'off') return; //如果是清除 resize 事件，则终止往下执行
        
        fn(), admin.resizeFn[key] = fn;
        $win.on('resize', admin.resizeFn[key]);
      }
      ,resizeFn: {}
      ,runResize: function(){
        var router = layui.router()
        ,key = router.path.join('-');
        admin.resizeFn[key] && admin.resizeFn[key]();
      }
      ,delResize: function(){
        this.resize('off');
      }
      
      //关闭当前 pageTabs
      ,closeThisTabs: function(){
        if(!admin.tabsPage.index) return;
        $(TABS_HEADER).eq(admin.tabsPage.index).find('.layui-tab-close').trigger('click');
      }
      
      //全屏
      ,fullScreen: function(){
        var ele = document.documentElement
        ,reqFullScreen = ele.requestFullScreen || ele.webkitRequestFullScreen 
        || ele.mozRequestFullScreen || ele.msRequestFullscreen;      
        if(typeof reqFullScreen !== 'undefined' && reqFullScreen) {
          reqFullScreen.call(ele);
        };
      }
      
      //退出全屏
      ,exitScreen: function(){
        var ele = document.documentElement
        if (document.exitFullscreen) {  
          document.exitFullscreen();  
        } else if (document.mozCancelFullScreen) {  
          document.mozCancelFullScreen();  
        } else if (document.webkitCancelFullScreen) {  
          document.webkitCancelFullScreen();  
        } else if (document.msExitFullscreen) {  
          document.msExitFullscreen();  
        }
      }
      
      //……
    };
    
    //事件
    var events = admin.events = {
      //伸缩
      flexible: function(othis){
        var iconElem = othis.find('#'+ APP_FLEXIBLE)
        ,isSpread = iconElem.hasClass(ICON_SPREAD);
        admin.sideFlexible(isSpread ? 'spread' : null);
      }
      
      //刷新
      ,refresh: function(){
        var ELEM_IFRAME = '.layadmin-iframe'
        ,length = $('.'+ TABS_BODY).length;
        
        if(admin.tabsPage.index >= length){
          admin.tabsPage.index = length - 1;
        }
        
        var iframe = admin.tabsBody(admin.tabsPage.index).find(ELEM_IFRAME);
        iframe[0].contentWindow.location.reload(true);
      }
  
      //输入框搜索
      ,serach: function(othis){
        othis.off('keypress').on('keypress',function(e){
          if(!this.value.replace(/\s/g, '')) return;
          //回车跳转
          if(e.keyCode === 13){
            var href = othis.attr('lay-action')
            ,text = othis.attr('lay-text') || '搜索';
            
            href = href + this.value;
            text = text + ' <span style="color: #FF5722;">'+ admin.escape(this.value) +'</span>';
            
            //打开标签页
            layui.index.openTabsPage(href, text);
            
            //如果搜索关键词已经打开，则刷新页面即可
            events.serach.keys || (events.serach.keys = {});
            events.serach.keys[admin.tabsPage.index] = this.value;
            if(this.value === events.serach.keys[admin.tabsPage.index]){
              events.refresh(othis);
            }
            
            //清空输入框
            this.value = '';
          }       
        });
      }
      
      //点击消息
      ,message: function(othis){
        othis.find('.layui-badge-dot').remove();
      }
      
      //弹出主题面板
      ,theme: function(){
        admin.popupRight({
          id: 'LAY_adminPopupTheme'
          ,success: function(){
            view(this.id).render('system/theme')
          }
        });
      }
      
      //便签
      ,note: function(othis){
        var mobile = admin.screen() < 2
        ,note = layui.data(setter.tableName).note;
        
        events.note.index = admin.popup({
          title: '便签'
          ,shade: 0
          ,offset: [
            '41px'
            ,(mobile ? null : (othis.offset().left - 250) + 'px')
          ]
          ,anim: -1
          ,id: 'LAY_adminNote'
          ,skin: 'layadmin-note layui-anim layui-anim-upbit'
          ,content: '<textarea placeholder="内容"></textarea>'
          ,resize: false
          ,success: function(layero, index){
            var textarea = layero.find('textarea')
            ,value = note === undefined ? '便签中的内容会存储在本地，这样即便你关掉了浏览器，在下次打开时，依然会读取到上一次的记录。是个非常小巧实用的本地备忘录' : note;
            
            textarea.val(value).focus().on('keyup', function(){
              layui.data(setter.tableName, {
                key: 'note'
                ,value: this.value
              });
            });
          }
        })
      }
  
      //全屏
      ,fullscreen: function(othis){
        var SCREEN_FULL = 'layui-icon-screen-full'
        ,SCREEN_REST = 'layui-icon-screen-restore'
        ,iconElem = othis.children("i");
        
        if(iconElem.hasClass(SCREEN_FULL)){
          admin.fullScreen();
          iconElem.addClass(SCREEN_REST).removeClass(SCREEN_FULL);
        } else {
          admin.exitScreen();
          iconElem.addClass(SCREEN_FULL).removeClass(SCREEN_REST);
        }
      }
  
      //弹出关于面板
      ,about: function(){
        admin.popupRight({
          id: 'LAY_adminPopupAbout'
          ,success: function(){
            view(this.id).render('system/about');
          }
        });
      }
      
      //弹出更多面板
      ,more: function(){
        admin.popupRight({
          id: 'LAY_adminPopupMore'
          ,success: function(){
            view(this.id).render('system/more');
          }
        });
      }
      
      //返回上一页
      ,back: function(){
        history.back();
        
      }

      //返回上一页
      ,forward: function(){
        history.forward();
      }
      
      //主题设置
      ,setTheme: function(othis){
        var index = othis.data('index')
        ,nextIndex = othis.siblings('.layui-this').data('index');
        
        if(othis.hasClass(THIS)) return;
        
        othis.addClass(THIS).siblings('.layui-this').removeClass(THIS);
        admin.initTheme(index);
      }
      
      //左右滚动页面标签
      ,rollPage: function(type, index){
        var tabsHeader = $('#LAY_app_tabsheader')
        ,liItem = tabsHeader.children('li')
        ,scrollWidth = tabsHeader.prop('scrollWidth')
        ,outerWidth = tabsHeader.outerWidth()
        ,tabsLeft = parseFloat(tabsHeader.css('left'));
        
        //右左往右
        if(type === 'left'){
          if(!tabsLeft && tabsLeft <=0) return;
          
          //当前的left减去可视宽度，用于与上一轮的页标比较
          var  prefLeft = -tabsLeft - outerWidth; 
  
          liItem.each(function(index, item){
            var li = $(item)
            ,left = li.position().left;
            
            if(left >= prefLeft){
              tabsHeader.css('left', -left);
              return false;
            }
          });
        } else if(type === 'auto'){ //自动滚动
          (function(){
            var thisLi = liItem.eq(index), thisLeft;
            
            if(!thisLi[0]) return;
            thisLeft = thisLi.position().left;
            
            //当目标标签在可视区域左侧时
            if(thisLeft < -tabsLeft){
              return tabsHeader.css('left', -thisLeft);
            }
            
            //当目标标签在可视区域右侧时
            if(thisLeft + thisLi.outerWidth() >= outerWidth - tabsLeft){
              var subLeft = thisLeft + thisLi.outerWidth() - (outerWidth - tabsLeft);
              liItem.each(function(i, item){
                var li = $(item)
                ,left = li.position().left;
                
                //从当前可视区域的最左第二个节点遍历，如果减去最左节点的差 > 目标在右侧不可见的宽度，则将该节点放置可视区域最左
                if(left + tabsLeft > 0){
                  if(left - tabsLeft > subLeft){
                    tabsHeader.css('left', -left);
                    return false;
                  }
                }
              });
            }
          }());
        } else {
          //默认向左滚动
          liItem.each(function(i, item){
            var li = $(item)
            ,left = li.position().left;
  
            if(left + li.outerWidth() >= outerWidth - tabsLeft){
              tabsHeader.css('left', -left);
              return false;
            }
          });
        }      
      }
      
      //向右滚动页面标签
      ,leftPage: function(){
        events.rollPage('left');
      }
      
      //向左滚动页面标签
      ,rightPage: function(){
        events.rollPage();
      }
      
      //关闭当前标签页
      ,closeThisTabs: function(){
        var topAdmin = parent === self ? admin : parent.layui.admin;
        topAdmin.closeThisTabs();
      }
      
      //关闭其它标签页
      ,closeOtherTabs: function(type){
        var TABS_REMOVE = 'LAY-system-pagetabs-remove';
        if(type === 'all'){
          $(TABS_HEADER+ ':gt(0)').remove();
          $(APP_BODY).find('.'+ TABS_BODY+ ':gt(0)').remove();
  
          $(TABS_HEADER).eq(0).trigger('click');
        } else {
          $(TABS_HEADER).each(function(index, item){
            if(index && index != admin.tabsPage.index){
              $(item).addClass(TABS_REMOVE);
              admin.tabsBody(index).addClass(TABS_REMOVE);
            }
          });
          $('.'+ TABS_REMOVE).remove();
        }
      }
      
      //关闭全部标签页
      ,closeAllTabs: function(){
        events.closeOtherTabs('all');
        //location.hash = '';
      }
      
      //遮罩
      ,shade: function(){
        admin.sideFlexible();
      }
      
      //呼出IM 示例
      ,im: function(){
        admin.popup({
          id: 'LAY-popup-layim-demo' //定义唯一ID，防止重复弹出
          ,shade: 0
          ,area: ['800px', '300px']
          ,title: '面板外的操作示例'
          ,offset: 'lb'
          ,success: function(){
            //将 views 目录下的某视图文件内容渲染给该面板
            layui.view(this.id).render('layim/demo').then(function(){
              layui.use('im');
            });
          }
        })
      }
    };
    
    //初始
    !function(){
      //主题初始化，本地主题记录优先，其次为 initColorIndex
      var local = layui.data(setter.tableName);
      if(local.theme){
        admin.theme(local.theme);
      } else if(setter.theme){
        admin.initTheme(setter.theme.initColorIndex);
      }
      
      //常规版默认开启多标签页
      if(!('pageTabs' in layui.setter)) layui.setter.pageTabs = true;
      
      //不开启页面标签时
      if(!setter.pageTabs){
        $('#LAY_app_tabs').addClass(HIDE);
        container.addClass('layadmin-tabspage-none');
      }
  
      //低版本IE提示
      if(device.ie && device.ie < 10){
        view.error('IE'+ device.ie + '下访问可能不佳，推荐使用：Chrome / Firefox / Edge 等高级浏览器', {
          offset: 'auto'
          ,id: 'LAY_errorIE'
        });
      }
      
    }();
    
    //admin.prevRouter = {}; //上一个路由
    
    //监听 tab 组件切换，同步 index
    element.on('tab('+ FILTER_TAB_TBAS +')', function(data){
      admin.tabsPage.index = data.index;
    });
    
    //监听选项卡切换，改变菜单状态
    admin.on('tabsPage(setMenustatus)', function(router){
      var pathURL = router.url, getData = function(item){
        return {
          list: item.children('.layui-nav-child')
          ,a: item.children('*[lay-href]')
        }
      }
      ,sideMenu = $('#'+ SIDE_MENU)
      ,SIDE_NAV_ITEMD = 'layui-nav-itemed'
      
      //捕获对应菜单
      ,matchMenu = function(list){
        list.each(function(index1, item1){
          var othis1 = $(item1)
          ,data1 = getData(othis1)
          ,listChildren1 = data1.list.children('dd')
          ,matched1 = pathURL === data1.a.attr('lay-href');
          
          listChildren1.each(function(index2, item2){
            var othis2 = $(item2)
            ,data2 = getData(othis2)
            ,listChildren2 = data2.list.children('dd')
            ,matched2 = pathURL === data2.a.attr('lay-href');
            
            listChildren2.each(function(index3, item3){
              var othis3 = $(item3)
              ,data3 = getData(othis3)
              ,matched3 = pathURL === data3.a.attr('lay-href');
              
              if(matched3){
                var selected = data3.list[0] ? SIDE_NAV_ITEMD : THIS;
                othis3.addClass(selected).siblings().removeClass(selected); //标记选择器
                return false;
              }
              
            });
  
            if(matched2){
              var selected = data2.list[0] ? SIDE_NAV_ITEMD : THIS;
              othis2.addClass(selected).siblings().removeClass(selected); //标记选择器
              return false
            }
            
          });
          
          if(matched1){
            var selected = data1.list[0] ? SIDE_NAV_ITEMD : THIS;
            othis1.addClass(selected).siblings().removeClass(selected); //标记选择器
            return false;
          }
          
        });
      }
      
      //重置状态
      sideMenu.find('.'+ THIS).removeClass(THIS);
      
      //移动端点击菜单时自动收缩
      if(admin.screen() < 2) admin.sideFlexible();
      
      //开始捕获
      matchMenu(sideMenu.children('li'));
    });
    
    //监听侧边导航点击事件
    element.on('nav(layadmin-system-side-menu)', function(elem){
      if(elem.siblings('.layui-nav-child')[0] && container.hasClass(SIDE_SHRINK)){
        admin.sideFlexible('spread');
        layer.close(elem.data('index'));
      };
      admin.tabsPage.type = 'nav';
    });
    
    //监听选项卡的更多操作
    element.on('nav(layadmin-pagetabs-nav)', function(elem){
      var dd = elem.parent();
      dd.removeClass(THIS);
      dd.parent().removeClass(SHOW);
    });
    
    //同步路由
    var setThisRouter = function(othis){
      var layid = othis.attr('lay-id')
      ,attr = othis.attr('lay-attr')
      ,index = othis.index();
      
      admin.tabsBodyChange(index, {
        url: attr
      });
      //location.hash = layid === setter.entry ? '/' : attr;
    }
    ,TABS_HEADER = '#LAY_app_tabsheader>li';
    
    //标签页标题点击
    $body.on('click', TABS_HEADER, function(){
      var othis = $(this)
      ,index = othis.index();
      
      admin.tabsPage.type = 'tab';
      admin.tabsPage.index = index;
  
      setThisRouter(othis);
    });
    
    //监听 tabspage 删除
    element.on('tabDelete('+ FILTER_TAB_TBAS +')', function(obj){
      var othis = $(TABS_HEADER+ '.layui-this');
      
      obj.index && admin.tabsBody(obj.index).remove();
      setThisRouter(othis);
      
      //移除resize事件
      admin.delResize();
    });
    
    //页面跳转
    $body.on('click', '*[lay-href]', function(){
      var othis = $(this)
      ,href = othis.attr('lay-href')
      ,text = othis.attr('lay-text')
      ,router = layui.router();
      
      admin.tabsPage.elem = othis;
      //admin.prevRouter[router.path[0]] = router.href; //记录上一次各菜单的路由信息
  
      //执行跳转
      var topLayui = parent === self ? layui : top.layui;
      topLayui.index.openTabsPage(href, text || othis.text());
    });
    
    //点击事件
    $body.on('click', '*[layadmin-event]', function(){
      var othis = $(this)
      ,attrEvent = othis.attr('layadmin-event');
      events[attrEvent] && events[attrEvent].call(this, othis);
    });
    
    //tips
    $body.on('mouseenter', '*[lay-tips]', function(){
      var othis = $(this);
      
      if(othis.parent().hasClass('layui-nav-item') && !container.hasClass(SIDE_SHRINK)) return;
      
      var tips = othis.attr('lay-tips')
      ,offset = othis.attr('lay-offset') 
      ,direction = othis.attr('lay-direction')
      ,index = layer.tips(tips, this, {
        tips: direction || 1
        ,time: -1
        ,success: function(layero, index){
          if(offset){
            layero.css('margin-left', offset + 'px');
          }
        }
      });
      othis.data('index', index);
    }).on('mouseleave', '*[lay-tips]', function(){
      layer.close($(this).data('index'));
    });
    
    //窗口resize事件
    var resizeSystem = layui.data.resizeSystem = function(){
      //layer.close(events.note.index);
      layer.closeAll('tips');
      
      if(!resizeSystem.lock){
        setTimeout(function(){
          admin.sideFlexible(admin.screen() < 2 ? '' : 'spread');
          delete resizeSystem.lock;
        }, 100);
      }
      
      resizeSystem.lock = true;
    }
    $win.on('resize', layui.data.resizeSystem);
    
    //接口输出
    exports('admin', admin);
  });